package com.lyz.dataStructure.algorithm.滴滴2020;

import java.util.Scanner;

/*
给出一个仅包含加减乘除四种运算符的算式(不含括号)，如1+2*3/4，在保持运算符顺序不变的情况下，现在你可以进行若干次如下操作：
如果交换相邻的两个数，表达式值不变，那么你就可以交换这两个数。
现在你可以进行任意次操作，使得算式的数字序列字典序最小，然后输出结果，数字之间的字典序定义为若a<b则a的字典序小于b。


输入
第一行包含一个整数n，表示算式的长度，即包含n个数字和n-1个运算符。(1≤n≤100000)。

第二行包含一个含有n个非0整数和n-1个运算符的算式，整数与运算符用空格隔开，运算符包括“+，-，*，/”，整数的绝对值不超过1000。

输出
按要求输出字典序最小的表达式，数字与符号之间用空格隔开。


样例输入
6
3 + 2 + 1 + -4 * -5 + 1
样例输出
1 + 2 + 3 + -5 * -4 + 1

 */
public class 算式转移 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //int n = sc.nextInt();
       String s = sc.nextLine();
       System.out.println(outputString(s));


    }
    public static String outputString(String str){
        StringBuilder st = new StringBuilder();
        for(int i =0;i<str.length();i++){
            if(str.charAt(i)!=' '){
                st.append(str.charAt(i));
            }
        }
        //3+2+1+-4*-5+1
       for(int i =0;i<st.length()-2;i++){
            if(st.charAt(i+1)=='+'){
                if(st.charAt(i)>st.charAt(i+2)){
                       shu(st.charAt(i),st.charAt(i+2));
                    //char c = st.charAt(i+2)
                }
            }
       }
        return st.toString();
    }

    public static void shu(char c1,char c2){
        if(c1>c2){
            char c = c2;
            c2=c1;
            c1 =  c;
        }
    }
}
